Multi-server file download

ABSTRACT

A method for downloading a file to a client, the method including determining the presence of the file on each of a plurality of secondary servers, retrieving a plurality of portions of the file from any of the servers, where at least a first of the portions is retrieved from a first of any of the servers and at least a second of the portions is retrieved from a second of any of the servers, and assembling the file at the client from the plurality of portions.

CROSS REFERENCE TO RELATED APPLICATIONS

[0001] This application is a continuation application of U.S. patent application Ser. No. 09/448,179, filed on Nov. 24, 1999, which is hereby incorporated by reference.

FIELD OF THE INVENTION

[0002] The present invention relates to computer networks in general, and more particularly to methods and apparatus for downloading a file from a server.

BACKGROUND OF THE INVENTION

[0003] Transfer protocols for downloading files from serving computers (servers) to client computers (clients) via computer networks such as the Internet are well known in the art. Two commonly used transfer protocols include the File Transfer Protocol (FTP) and the Hypertext Transfer Protocol (HTTP). Generally speaking, in order to download a file a client establishes a single data transfer link with a server during a file transfer session through which the contents of the file is transmitted from the server to the client.

[0004] Recent developments in file transfer software which implement the various transfer protocols include the ability to begin downloading a file from a point other than the start of the file simply by instructing the server to begin transmitting the file from a specified byte offset. This has led to the development of file transfer software that is able to resume a download where the data transfer link has been broken in the middle of a download. The download is simply continued from the point at which the download stopped in another file transfer session via another data transfer link with the server.

[0005] This ability to download a file in sections has more recently led to the development of file transfer software which establishes multiple data transfer links with a server where different portions of a single file are downloaded via different data transfer links and reassembled at the client. This generally results in a file being downloaded to a client faster due to the greater cumulative throughput of multiple data transfer links with a single server as compared with that of a single data transfer link with the server.

SUMMARY OF THE INVENTION

[0006] The present invention seeks to provide improved methods and apparatus for downloading a file from a server.

[0007] There is thus provided in accordance with a preferred embodiment of the present invention a method for downloading a file to a client, the method including the steps of a) determining the presence of the file on each of a plurality of secondary servers, b) retrieving a plurality of portions of the file from any of the servers, where at least a first of the portions is retrieved from a first of any of the servers and at least a second of the portions is retrieved from a second of any of the servers, and c) assembling the file at the client from the plurality of portions.

[0008] Further in accordance with a preferred embodiment of the present invention the method further includes the step of d) determining the presence of the file on a primary server and thereafter performing the determining step a), and where the determining step a) includes determining whether the file on each of the plurality of secondary servers is a duplicate of the file on the primary server.

[0009] Still further in accordance with a preferred embodiment of the present invention the method further includes the steps of e) determining the performance of a plurality of the servers, f) ranking the plurality of servers from best performing to worst performing, and where the retrieving step b) includes retrieving from a selected plurality of the plurality of servers selected in order of their ranking from best performing to worst performing.

[0010] Additionally in accordance with a preferred embodiment of the present invention the determining the performance step includes determining the response time of the server.

[0011] Moreover in accordance with a preferred embodiment of the present invention the determining the performance step includes determining the throughput of the server.

[0012] Further in accordance with a preferred embodiment of the present invention the retrieving step b) includes discontinuing retrieving any of the portions from any of the servers that provides its portion at a performance level that falls below a predefined performance level, and continuing retrieval of the retrieval-discontinued portion from any other of the servers.

[0013] Still further in accordance with a preferred embodiment of the present invention the retrieving step b) includes retrieving using File Transfer Protocol (FTP).

[0014] Additionally in accordance with a preferred embodiment of the present invention the retrieving step b) includes retrieving using Hypertext Transfer Protocol (HTTP).

BRIEF DESCRIPTION OF THE DRAWINGS

[0015] The present invention will be understood and appreciated more fully from the following detailed description taken in conjunction with the appended drawings in which:

[0016]FIG. 1 is a simplified illustration of a multi-link, multi-server file transfer system, constructed and operative in accordance with a preferred embodiment of the present invention;

[0017]FIG. 2 is a simplified flowchart illustration of a method of operation of the system of FIG. 1, operative in accordance with a preferred embodiment of the present invention;

[0018]FIG. 3 is a simplified flowchart illustration of a method of implementation of step 130 of FIG. 2, operative in accordance with a preferred embodiment of the present invention; and

[0019]FIG. 4 is a simplified flowchart illustration of a method of implementation of step 140 of FIG. 2, operative in accordance with a preferred embodiment of the present invention.

DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS

[0020] Reference is now made to FIG. 1 which is a simplified illustration of a multi-link, multi-server file transfer system, constructed and operative in accordance with a preferred embodiment of the present invention. In the system of FIG. 1 a client computer 10 is shown having established a data transfer link with each of three server computers 12, 14, and 16 via a network 18, such as the Internet. Although one link is shown between client 10 and each of three servers in FIG. 1, it is appreciated that more than one link may be established between client 10 and each of any number of servers. In the illustration file XYZ.DOC is shown being downloaded from servers 12, 14, and 16 in three separate portions using the File Transfer Protocol (FTP), the Hypertext Transfer Protocol (HTTP), or any other protocol known in the art that supports the downloading of a portion of a file starting at a location determined by the requester, often starting at a location other than the beginning of the file, such as by specifying a byte offset. The portion being downloaded from server 12 begins at byte offset 0, the portion from server 14 begins at byte offset 1000, and the portion from server 16 begins at byte offset 2000. The three portions are then transferred to client 10 where they are then assembled into a single file XYZ.DOC comprising the three portions transferred from servers 12, 14, and 16 and spanning bytes 0-3000, as is shown by an arrow 20.

[0021] Reference is now made to FIG. 2 which is a simplified flowchart illustration of a method of operation of the system of FIG. 1, operative in accordance with a preferred embodiment of the present invention. The method of FIG. 2 may be implemented in client 10 using executable software, hardware, or any suitable combination thereof using conventional techniques. In the method of FIG. 2 a file to be downloaded is indicated at client 10 using any known data entry or selection technique, such as by clicking on a Hypertext Markup Language (HTML) link in a web page within a browser running on client 10 (step 100). In the embodiment of FIG. 2 the indication of the file preferably includes the location of a primary server on which the file may be found. This may be effected through the use of a Universal Resource Locator (URL) or any other location indicator known in the art. The file on the primary server is then identified by the client (step 110), typically to provide one or more file characteristics such as file name and size, Next, the presence of the file on one or more secondary servers is determined such that the file on a secondary server is a duplicate of the file on the primary server in that it has the same file characteristics as the file on the primary server (step 120). The client may maintain a list of the addresses of such secondary servers and/or may query search engines using known metasearching techniques. Once the primary and secondary servers are determined the client establishes one or more data transfer links with each of two or more servers (step 130) and instructs the servers to begin downloading portions of the file, such that each data transfer link conveys a different portion of the file and each server begins the download of each portion at a different location within the file as specified by the client (step 140). The number of servers and data transfer links chosen to download portions of the file may be determined using known statistical methods and measures of throughput, although a default number of servers and data transfer links may be specified to start with. The portions received at the client are then assembled to form the requested file (step 150).

[0022] Reference is now made to FIG. 3 which is a simplified flowchart illustration of a method of implementation of step 130 of FIG. 2, operative in accordance with a preferred embodiment of the present invention. In the method of FIG. 3 the client determines the performance of various primary and secondary servers using known techniques such as PINGing (step 1310) or other known performance measuring methods. The performance of a server may be expressed using any known performance measurements such as, but not limited to, response time and/or throughput. The servers are then ranked according to their speed from best performance to worst performance (step 1320). The servers from which the client downloads portions of the file are then preferably selected in order of their rank (step 1330).

[0023] Reference is now made to FIG. 4 which is a simplified flowchart illustration of a method of implementation of step 140 of FIG. 2, operative in accordance with a preferred embodiment of the present invention. In the method of FIG. 4 the client instructs the servers to begin downloading portions of the file, such that each data transfer link conveys a different portion of the file and each server begins the download of each portion at a different location within the file specified by the client (step 1410). The performance of each server and/or each data transfer link as determined using conventional performance measurement techniques, such as bit rate, is preferably monitored periodically or continuously (step 1420). Should the performance of a server and/or data transfer link fall below a predefined performance level, the download via that server/data transfer link is preferably discontinued (step 1430). A data transfer link to a new server and/or new data transfer link to a current server is then established, and the remainder of the portion whose download was discontinued is downloaded through the link preferably starting from the location within the file at which the download was discontinued (step 1440). It is also appreciated that a data transfer link to a server may be discontinued in compliance with a user-directive not necessarily related to server performance.

[0024] While the methods and apparatus disclosed herein may or may not have been described with reference to specific hardware or software, the methods and apparatus have been described in a manner sufficient to enable persons of ordinary skill in the art to readily adapt commercially available hardware and software as may be needed to reduce any of the embodiments of the present invention to practice without undue experimentation and using conventional techniques.

[0025] While the present invention has been described with reference to a few specific embodiments, the description is intended to be illustrative of the invention as a whole and is not to be construed as limiting the invention to the embodiments shown. It is appreciated that various modifications may occur to those skilled in the art that, while not specifically shown herein, are nevertheless within the true spirit and scope of the invention. 

What is claimed is:
 1. A system for downloading a file from a computer, the system comprising: means for retrieving a plurality of portions of a file from a plurality of computers, wherein at least a first of said portions is retrieved from a first one of said computers and at least a second of said portions is retrieved from a second one of said computers; and means for assembling said file from said plurality of portions.
 2. A system according to claim 1 and further comprising: means for determining the presence of said file on each of said computers.
 3. A system according to claim 2 wherein said means for determining is operative to: determine the presence of said file on a primary computer; and determine whether said file on each of said plurality of computers is a duplicate of said file on said primary computer.
 4. A system according to claim 2 wherein said means for determining is operative to determine that said files on each of said computers have at least one file characteristic in common.
 5. A system according to claim 1 and further comprising: means for receiving a list of the addresses of said computers from a query-capable computer.
 6. A system according to claim 1 and further comprising: means for determining the performance of said computers; means for ranking said computers from best performing to worst performing, and wherein said means for retrieving is operative to retrieve from a selected plurality of said computers selected in order of their ranking from best performing to worst performing.
 7. A system according to claim 6 wherein said means for determining is operative to determine the response time of said computers.
 8. A system according to claim 6 wherein said means for determining is operative to determine the throughput of said computers.
 9. A system according to claim 1 wherein said means for retrieving is operative to: discontinue retrieving any of said portions from any of said computers that provides its portion at a performance level that falls below a predefined performance level; and continue retrieval of said retrieval-discontinued portion from any other of said computers.
 10. A system according to claim 1 wherein said means for retrieving is operative to: discontinue retrieving any of said portions from any of said computers that provides its portion at a performance level that falls below a predefined performance level; and continue retrieval of said retrieval-discontinued portion from a computer other than any of said computers.
 11. A system according to claim 1 wherein said means for retrieving is operative to retrieve using File Transfer Protocol (FTP).
 12. A system according to claim 1 wherein said means for retrieving is operative to retrieve using Hypertext Transfer Protocol (HTTP).
 13. A method for downloading a file from a computer, the method comprising: retrieving a plurality of portions of said file from a plurality of computers, wherein at least a first of said portions is retrieved from a first of any of said computers and at least a second of said portions is retrieved from a second of any of said computers; and assembling said file from said plurality of portions.
 14. A method according to claim 13 and further comprising: determining the presence of said file on each of said plurality of said computers.
 15. A method according to claim 14 wherein determining the presence of said file comprises: determining the presence of said file on a primary computer, and determining whether said file on each of said plurality of computers is a duplicate of said file on said primary computer.
 16. A method according to claim 14 wherein said determining the presence of said file comprises determining that said files on each of said plurality of said computers have at least one file characteristic in common.
 17. A method according to claim 13 and further comprising receiving a list of the addresses of said computers from a query-capable computer.
 18. A method according to claim 13 and further comprising: determining the performance of said computers, ranking said computers from best performing to worst performing, and wherein retrieving said plurality of portions comprises retrieving from a selected plurality of said computers selected in order of their ranking from best performing to worst performing.
 19. A method according to claim 18 wherein determining the performance of said computers comprises determining the response time of said computers.
 20. A method according to claim 18 wherein determining the performance of said computers comprises determining the throughput of said computers.
 21. A method according to claim 13 wherein retrieving said plurality of portions comprises: discontinuing retrieving any of said portions from any of said computers that provides its portion at a performance level that falls below a predefined performance level; and continuing retrieval of said retrieval-discontinued portion from any other of said computers.
 22. A method according to claim 13 wherein retrieving said plurality of portions comprises; discontinuing retrieving any of said portions from any of said computers that provides its portion at a performance level that falls below a predefined performance level; and continuing retrieval of said retrieval-discontinued portion from a computer other than any of said computers.
 23. A method according to claim 13 wherein retrieving said plurality of portions comprises retrieving using File Transfer Protocol (FTP).
 24. A method according to claim 13 wherein retrieving said plurality of portions comprises retrieving using Hypertext Transfer Protocol (HTTP).
 25. A computer program embodied on a computer-readable medium for downloading a file from a computer and comprising: a file retrieval code segment operative to retrieve a plurality of portions of said file from a plurality of computers, wherein said file retrieval code segment is operative to retrieve at least a first of said portions from a first of any of said computers and at least a second of said portions from a second of any of said computers; and a file assembly code segment operative to assemble said file from said plurality of portions. 